package learningThread.syn.synchronizedMethodLockObj.communicate.testVolatileAndNotify;

/**
 * notify也要在 同步方法或者同步方法块中被调用，调用前也必须要获得对象锁
 * 该方法是用来通知 可能等待该对象的对象锁的其他线程，如果存在多个等待线程,就会随机挑选出一个waite状态的线程，
 * 在执行notify方法后当前线程不会立马释放对象锁，要等到执行notify()方法的线程将程序执行完也就是 退出 syn方法或者syn方法块后，当前线程才会释放锁，
 * 那时候呈waite状态的线程才能得到锁
 *
 * notify是唤醒一个dengdaixiancheng  notifyAll是唤醒全部线程。
 */
public class MyThread2 extends Thread{

    private Object obj;

    public MyThread2(Object obj) {
        this.obj = obj;
    }

    @Override
    public void run() {

            synchronized (obj){
                System.out.println("开始 notify..."+System.currentTimeMillis());
                obj.notify();
                System.out.println("结束 notify..."+System.currentTimeMillis());
            }

    }
}
